home *** CD-ROM | disk | FTP | other *** search
- AMIGA AMIWIN PORT of MESA: THE OPENGL SOFTWARE EMULATION
- ========================================================
- Port by Victor Ng-Thow-Hing (victorng@dgp.toronto.edu)
- Original Author (Brian Paul (brianp@ssec.wisc.edu)
-
- Dec.1 , 1995: Port of release Mesa 1.2.5
- - Modifications made to minimize changes to Mesa distribution.
-
- Nov.25, 1995: Port of release Mesa 1.2.4
-
-
- HISTORY
- =======
- As a 3D graphics progammer, I was increasingly frustrated to see OpenGL
- appearing on so many platforms EXCEPT the Amiga. Up to now, the task
- of porting OpenGL directly from native Amiga drawing routines seemed like
- a daunting task. However, two important events made this port possible.
-
- First of all, Brian Paul wrote Mesa, the OpenGL software emulator that
- can be found on many platforms - except the Amiga and Atari (who cares
- about the latter!). This was pretty ironic considering that Mesa was
- originally prototyped on an Amiga! The second great event was when
- Holger Kruse developed AmiWin, the X11R6 server for the Amiga (definitely
- register for this great piece of software) and released a development kit
- so one could compile X programs with SAS/C.
-
- Since Mesa had X routines as its primitive drawing operations, this made
- a marriage of Mesa and Amiwin feasible. I copied over the sources from
- an ftp site, played with the code, wrote some Smakefiles, and voila,
- I had OpenGL programs displaying on my Amiga.
-
- Although the speed is nothing to be impressed about, this port can be
- potentially useful to those who want to quickly test their code in
- wireframe or perhaps learn more about programming with the OpenGL API.
-
- I hope Amiga developers will continue to write excellent software for
- their machine, especially more X clients for Amiwin. If you have any
- solutions so some of my problems in the porting notes, please send me
- some email!
-
- See you around,
- Vic.
-
- HOW TO CREATE THE LIBRARIES AND SAMPLE CODE
- ===========================================
-
- Just run the shell script mklib.amiwin in the mesa directory. This will
- make all the libraries and copy them into the mesa/lib directory. If you
- don't want to compile everything, just go to the desired directory and
- type smake in that directory.
-
- Change any of the variables in the smakefiles as necessary. You will REQUIRE
- the Amiwin development kit to compile these libraries since you need X11.LIB
- and the shareable X libraries. Some examples require the AmiTCP4.0
- net.lib static link library and related header files for unix related
- header files and functions like sleep().
-
- HOW TO USE THE MESA LIBRARIES
- =============================
-
- Study the Smakefiles in the demos, samples and book directories for the
- proper SAS/C options and linkable libraries to use. Basically aux calls
- require Mesaaux.LIB, gl calls require MesaGL.LIB, glu calls MesaGLU.LIB,
- tk calls Mesatk.LIB. There is a preliminary port of MesaGLUT.LIB toolkit
- available in the lib directory with the other Mesa libraries. However,
- it seems to cause crashes on some of the sample code. Someone else may want
- to attempt a more stable port.
-
- PORTING NOTES TO AMIWIN
- =======================
-
- My strategy of porting was to leave as much of the code untouched as
- possible. I surrounded any amiga specific changes with
- #ifdef AMIWIN ... #endif or #ifndef AMIWIN ... #endif preprocessor
- symbols. The code was ported on an Amiga 2000, with Fusion 40 accelerator
- and a Picasso II graphics card. The SAS/C 6.56 compiler was used, with
- the AmiWin 2.16 X development kit.
-
- All compilations were done for a 68040 CPU with 68882 math coprocessor for
- maximum speed. Please edit the smakefile for other compilers.
- I wrote smakefiles for the directories I ported. I omitted the Windows
- and Widgets directories. The former is for MS Windows and the latter
- requires Motif, which is not easily available for the Amiga.
-
- Here are the changes I did per directory:
-
- * mesa
- Nov. 25, 1995 v 1.2.4
- - added a mklib.amiwin shell script that will make all the libraries and
- sample code for Mesa
- - created this readme file: readme.AMIGA
-
- * mesa/include
- Dec. 1, 1995 v 1.2.5
- - added the following to GL/xmesa.h
- #ifdef AMIWIN
- #include <pragmas/xlib_pragmas.h>
- extern struct Library *XLibBase;
- #endif
- NET CHANGE: xmesa.h
-
- * mesa/src
- Nov. 25, 1995 v 1.2.4
- - added the necessary pragma calls for X functions to the following:
- xmesa1.c, xmesa2.c, xmesa3.c, xfonts.c, glx.c
- This prevents undefined symbols errors during the linking phase for
- X library calls
- - created smakefile
- Dec. 1, 1995 v 1.2.5
- - removed AMIWIN includes from xmesa1.c, xmesa2.c, xmesa3.c, xfonts.c,
- glx.c since they are now defined in include/GL/xmesa.h
- NET CHANGE: smakefile
-
- * mesa/src-tk
- Nov. 25, 1995 v 1.2.4
- - added the necessary pragma calls for X functions to the following:
- private.h
- - created smakefile
- Dec. 1, 1995 v 1.2.5
- - removed AMIWIN includes from private.h since it is now defined in
- include/GL/xmesa.h
- NET CHANGE: smakefile
-
- * mesa/src-glu
- Nov. 25, 1995 v 1.2.4
- - created smakefile
- NET CHANGE: smakefile
-
- * mesa/src-aux
- Nov. 25, 1995 v 1.2.4
- - added the necessary pragma calls for X functions to the following:
- glaux.c
- - created smakefile
- NET CHANGE: glaux.c, smakefile
-
- * mesa/demos
- Nov. 25, 1995 v 1.2.4
- - added the necessary pragma calls for X functions to the following:
- xdemo.c, glxdemo.c, offset.c
- - created smakefile
- - put #ifndef AMIWIN ... #endif around sleep() calls in xdemo.c since
- they are not part of AmigaDOS.
- Dec. 1, 1995 v 1.2.5
- - removed AMIWIN defines from xdemo.c, glxdemo.c, offset.c since
- already defined in include/GL/xmesa.h
- - modified Smakefile to include header and includes from the AmiTCP4.0
- net.lib linkable library to provide unix-compatible sys/time.h and
- the sleep() function
- - removed AMIWIN defines in xdemo.c since sleep() now defined
- NET CHANGE: smakefile
-
- * mesa/samples
- Nov. 25, 1995 v 1.2.4
- - added the necessary pragma calls for X functions to the following:
- oglinfo.c
- - created smakefile
- - put #ifndef AMIWIN ... #endif around sleep() in blendxor.c
- - removed olympic from smakefile targets since <sys/time.h> not defined
- Dec. 1, 1995 v 1.2.5
- - removed AMIWIN defines from oglinfo.c, since already defined in
- include/GL/xmesa.h
- - modified Smakefile to include header and includes from the AmiTCP4.0
- net.lib linkable library to provide unix-compatible sys/time.h and
- the sleep() function
- - removed AMIWIN defines in blendxor.c for sleep()
- - added AMIWIN defines around _MACHTEN_ in olympic.c since xrandom()
- functions are not defined in any libraries
- - added olympic back into the Smakefile targets
- NET CHANGE: smakefile, olympic.c
-
- * mesa/book
- Nov. 25, 1995 v 1.2.4
- - created smakefile
- - removed accpersp and dof from smakefile targets since the SAS/C compile seems to
- confuse the near,far variables with near/far memory models.
- NET CHANGE: smakefile
-
- * mesa/windows
- Dec. 1, 1995 v 1.2.5
- - Removed directory to save space since this is only needed for Windows based
- machines.
-